#!/bin/bash

# 检查当前shell，如果不是bash，则使用bash重新执行脚本
if [ -z "$BASH_VERSION" ]; then
    echo "当前shell不是bash，将使用bash重新执行脚本..."
    exec bash "$0" "$@"
fi

# 判断/data/tmp目录是否存在，不存在则创建
if [ ! -d "/data/tmp" ]; then
  mkdir -p /data/tmp
  echo "目录 /data/tmp 已创建。"
else
  echo "目录 /data/tmp 已存在。"
fi

cd /data/tmp

# 定义下载文件名
SAFE_RM_TARBALL="safe-rm-1.1.0.tar.gz"

# 判断safe-rm压缩包是否存在，不存在则下载
if [ ! -f "$SAFE_RM_TARBALL" ]; then
  echo "$SAFE_RM_TARBALL 不存在，开始下载..."
  #下载safe-rm
  wget https://launchpad.net/safe-rm/trunk/1.1.0/+download/$SAFE_RM_TARBALL
  if [ ! -f "$SAFE_RM_TARBALL" ]; then
    echo "$SAFE_RM_TARBALL 下载失败，请检查网络或URL。"
    exit 1
  fi
  echo "$SAFE_RM_TARBALL 下载成功。"
else
  echo "$SAFE_RM_TARBALL 已存在，跳过下载。"
fi

# 定义解压后的目录名
SAFE_RM_DIR="safe-rm-1.1.0"

# 如果解压目录已存在，则删除
if [ -d "$SAFE_RM_DIR" ]; then
  echo "目录 $SAFE_RM_DIR 已存在，将先删除它..."
  rm -rf "$SAFE_RM_DIR"
  if [ -d "$SAFE_RM_DIR" ]; then
    echo "删除目录 $SAFE_RM_DIR 失败，请检查权限或手动删除后重试。"
    exit 1
  fi
  echo "目录 $SAFE_RM_DIR 删除成功。"
fi

#解压
tar -zxvf $SAFE_RM_TARBALL

# 判断cargo是否已安装
if ! command -v cargo &> /dev/null
then
    echo "cargo 未安装，现在开始安装..."
    #安装依赖
    yum install cargo -y
    if ! command -v cargo &> /dev/null
    then
        echo "cargo 安装失败，请检查yum源或手动安装后再运行脚本。"
        exit 1
    fi
    echo "cargo 安装成功。"
else
    echo "cargo 已安装。"
fi

cd /data/tmp/safe-rm-1.1.0/
#编译，这一步会等很久......
make
#移动功能文件到系统目录
mv target/release/safe-rm /usr/local/bin/
#替换rm命令
echo 'alias rm="safe-rm -i"' >> /etc/bashrc
#刷新修改的文件
source /etc/bashrc
#创建链接,将safe-rm替换rm
ln -s /usr/local/bin/safe-rm /usr/local/bin/rm
echo 'PATH=/usr/local/bin:$PATH' >>  /etc/profile
source /etc/profile

# 创建 safe-rm 配置文件
echo "创建 /etc/safe-rm.conf 配置文件..."
cat << EOF > /etc/safe-rm.conf
/
/bin
/sbin
/boot
/dev
/etc
/lib
/lib64
/usr
/var
/proc
/sys
/run
# 也可以考虑保护 /home，除非你有特定需求允许删除整个 /home
/home
/data
/tmp/mytest/somefile.txt
EOF

echo ""
echo "==================== 重要提示 ===================="
echo "为了让环境变量和别名在整个系统全局生效,建议重启操作系统。"
echo "重启之后执行 'rm' 命令就相当于执行 'safe-rm -i' 了。"
echo ""
echo "'/etc/safe-rm.conf' 文件中的受保护路径列表可以随时修改,"
echo "修改后即时生效。您可以在自己的临时目录中创建文件并尝试使用 'rm' 命令进行测试。"
echo "例如："
echo "  mkdir -p /tmp/mytest && touch /tmp/mytest/somefile.txt"
echo "  rm /tmp/mytest/somefile.txt  (如果/tmp在保护列表，会提示；否则直接删除)"
echo "  # 然后可以将 /tmp 添加到 /etc/safe-rm.conf 再试一次"
echo "==============================================="

echo "safe-rm 安装和配置完成！" 